/**
 * 
 * 
 * 
*/

package GUI_SPR;

//Se importa lo necesario

import encryption.Encrypter;
import java.awt.BorderLayout;
import javax.swing.JOptionPane;
import persistence.UsoPersisteceMySQLConnection;
import sourceCode.StoreProductRegistration;

/**
 * @version 1.0
 * @author edwin
 */
public class MenuPrincipal extends javax.swing.JFrame {

    //-----------------------------------------------------------------
    //  Constructor:.
    //-----------------------------------------------------------------
    boolean inicioSecion;
    /**
     * Método que permite la creación de un nuevo objeto de Menu principal.
     */
    public MenuPrincipal() {
        initComponents();
        //Se coloca el fondo de la ventana.
        Fondo fondo = new Fondo (700,500,"fondo2.jpg");
        this.add(fondo,BorderLayout.CENTER);
        this.pack();
        inicioSecion = false;
        //Se inicia la persistencia
        persistencia = new UsoPersisteceMySQLConnection();
    }
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        usuarioL = new javax.swing.JLabel();
        contraseñaL = new javax.swing.JLabel();
        usuarioTF = new javax.swing.JTextField();
        entrarB = new javax.swing.JButton();
        derechos_autorL = new javax.swing.JLabel();
        registrarseB = new javax.swing.JButton();
        usuarioOlvidoB = new javax.swing.JButton();
        tituloL = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        contraseñaTF = new javax.swing.JPasswordField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Cartera Virtual");

        usuarioL.setFont(new java.awt.Font("Bookman Old Style", 0, 11));
        usuarioL.setForeground(new java.awt.Color(255, 255, 255));
        usuarioL.setText("Usuario");

        contraseñaL.setFont(new java.awt.Font("Bookman Old Style", 0, 11));
        contraseñaL.setForeground(new java.awt.Color(255, 255, 255));
        contraseñaL.setText("Contraseña");

        usuarioTF.setFont(new java.awt.Font("Bookman Old Style", 0, 11));

        entrarB.setFont(new java.awt.Font("Bookman Old Style", 0, 11));
        entrarB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/icon/go.png"))); // NOI18N
        entrarB.setText("Entrar");
        entrarB.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                entrarBActionPerformed(evt);
            }
        });

        derechos_autorL.setFont(new java.awt.Font("Bookman Old Style", 2, 10));
        derechos_autorL.setForeground(new java.awt.Color(255, 255, 255));
        derechos_autorL.setText("Derechos Reservados");

        registrarseB.setFont(new java.awt.Font("Bookman Old Style", 0, 11));
        registrarseB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/icon/add.png"))); // NOI18N
        registrarseB.setText("Registrarse");
        registrarseB.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                registrarseBActionPerformed(evt);
            }
        });

        usuarioOlvidoB.setFont(new java.awt.Font("Bookman Old Style", 0, 11));
        usuarioOlvidoB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/icon/cancel.png"))); // NOI18N
        usuarioOlvidoB.setText("Olvide El Nombre de Usuario");
        usuarioOlvidoB.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                usuarioOlvidoBActionPerformed(evt);
            }
        });

        tituloL.setFont(new java.awt.Font("Bookman Old Style", 0, 18));
        tituloL.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/icon/usuariomenu.png"))); // NOI18N

        jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/icon/virtual.png"))); // NOI18N

        contraseñaTF.setFont(new java.awt.Font("Bookman Old Style", 0, 11));

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(derechos_autorL)
                    .addComponent(tituloL)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(63, 63, 63)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(usuarioOlvidoB, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 309, Short.MAX_VALUE)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(46, 46, 46)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(contraseñaL)
                                    .addComponent(usuarioTF, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addComponent(usuarioL)
                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                        .addComponent(contraseñaTF, javax.swing.GroupLayout.Alignment.LEADING)
                                        .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                            .addComponent(entrarB)
                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                            .addComponent(registrarseB))))
                                .addGap(53, 53, 53)))
                        .addGap(88, 88, 88)))
                .addGap(23, 23, 23))
            .addGroup(layout.createSequentialGroup()
                .addGap(52, 52, 52)
                .addComponent(jLabel1)
                .addContainerGap(197, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(tituloL)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jLabel1)
                .addGap(11, 11, 11)
                .addComponent(usuarioTF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(1, 1, 1)
                .addComponent(usuarioL)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(contraseñaTF, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(contraseñaL)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(entrarB)
                    .addComponent(registrarseB))
                .addGap(35, 35, 35)
                .addComponent(usuarioOlvidoB, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(derechos_autorL, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(16, 16, 16))
        );

        usuarioL.getAccessibleContext().setAccessibleDescription("usuario");

        pack();
    }// </editor-fold>//GEN-END:initComponents

    //------------------------------------------------------------------------
    //Métodos 
    //------------------------------------------------------------------------


    /**
     * Método que permite crear un nuevo usuario para la aplicación.
     * @param evt El evento que se da al presionar el botón.
     */
    private void registrarseBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_registrarseBActionPerformed
        NuevoUsuario nuevoUsuario = new NuevoUsuario ();
        nuevoUsuario.show();
        dispose();
        
    }//GEN-LAST:event_registrarseBActionPerformed

    /**
     * Método que permite ingresar al menú principal de la aplicación por medio
     * del ingreso del usuario y contraseña maestra.
     * @param evt El evento que se da al presionar el botón.
     */
    private void entrarBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_entrarBActionPerformed
       Encrypter encriptador = new Encrypter();
        
        String UsuarioX = usuarioTF.getText();
        String passwordX = contraseñaTF.getText();
        if(!usuarioTF.getText().equals("") || !contraseñaTF.getText().equals("")) {
            if(UsoPersisteceMySQLConnection.hayUsuario()){
                if(UsoPersisteceMySQLConnection.verificarUsuario(UsuarioX, passwordX)){
                    inicioSecion = true;
                    JOptionPane.showMessageDialog(null, "Inicio de seción Exitoso");
                }
                else {
                    JOptionPane.showMessageDialog(null, "Falló el Ingreso de seción\n Intente nuevamente");
                    inicioSecion = false;
                }
            }
            else{
                JOptionPane.showMessageDialog(null, "Aún no se ha creado un usuario");
            }         
        }
        else{
            JOptionPane.showMessageDialog(null, "Ingrese todos los datos");
        } 
        if(inicioSecion){
            MenuOpciones.setCuenta(StoreProductRegistration.getCuenta(usuarioTF.getText(), contraseñaTF.getText()));
            MenuOpciones menu = new MenuOpciones();
            JOptionPane.showMessageDialog(null,"Bienvenido " + menu.getCuenta().getUsuario());
            menu.show();
            dispose();
        }
        
    }//GEN-LAST:event_entrarBActionPerformed

    /**
     * Método que le permite al usuario ingresar si saber el usuario.
     * @param evt El evento que se da al presionar el botón.
     */
    private void usuarioOlvidoBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_usuarioOlvidoBActionPerformed
                      
           
    }//GEN-LAST:event_usuarioOlvidoBActionPerformed

    
    /**
     * Método que maneja a la clase
     * @param args the command line arguments
     */
    
    //------------------------------------------------------------------------
    //Atributos
    //------------------------------------------------------------------------
    private static UsoPersisteceMySQLConnection persistencia;
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel contraseñaL;
    private javax.swing.JPasswordField contraseñaTF;
    private javax.swing.JLabel derechos_autorL;
    private javax.swing.JButton entrarB;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JButton registrarseB;
    private javax.swing.JLabel tituloL;
    private javax.swing.JLabel usuarioL;
    private javax.swing.JButton usuarioOlvidoB;
    private javax.swing.JTextField usuarioTF;
    // End of variables declaration//GEN-END:variables
}
